<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style></style>
  </head>
  <body>
    <div>
      <h1>V8如何回收新生代对象</h1>
      <div>
        <h2>V8内存分配</h2>
        <p>1.V8内存空间一分为二</p>
        <p>2.小空间用于存储新生代对象(64位操作系统32M | 32位操作系统16M)</p>
        <p>3.新生代指的是存活时间较短的对象</p>
      </div>
      <div>
        <h2>新生代对象回收实现</h2>
        <p>1.回收过程采用复制算法 + 标记整理</p>
        <p>2.新生代内存区分为两个等大小空间</p>
        <p>3.使用空间位From状态,空闲空间位To状态</p>
        <p>4.活动对象存储于From空间(当空间到达一定上线后会触发相应的操作)</p>
        <p>
          5.标记整理后将活动对象拷贝至To(把活动对象变的连续方便后续不会产生碎片化空间)
        </p>
        <p>6.From于To交换空间完成释放(回收释放From空间)</p>
      </div>
      <div>
        <h2>回收细节说明</h2>
        <p>
          1.拷贝过程中可能出现晋升(拷贝时发现某一个对象的所指向的空间,再老生代也会出现)
        </p>
        <p>2.晋升就是将新生代对象移动至老生代</p>
        <p>3.一轮GC海存活的新生代需要晋升(触发晋升移动到老生代)</p>
        <p>4.To空间的使用率超过25%(触发晋升移动到老生代)</p>
      </div>
    </div>
    <script></script>
  </body>
</html>
